public class StringDemo {

    /**
     * 字符串的特点：
     * 1. 字符串的内容永不可变。【重点】
     */
    public static void main(String[] args) {
        // 使用空参构造
        String str1 = new String(); // 小括号留空，说明字符串什么内容都没有。
        System.out.println("第1个字符串：" + str1);

        // 根据字符数组创建字符串
        char[] charArray = {'A', 'B', 'C'};
        String str2 = new String(charArray);
        System.out.println("第2个字符串：" + str2);  //ABC

        // 根据字节数组创建字符串
        byte[] byteArray = {97, 98, 99};
        String str3 = new String(byteArray);
        System.out.println("第3个字符串：" + str3); //abc

        // 直接创建
        String str4 = "Hello";
        System.out.println("第4个字符串：" + str4); //hello


        /*
        字符串常量池(堆中)：程序当中直接写上的双引号字符串，就在字符串常量池中。
            对于基本类型来说，==是进行数值的比较。
            对于引用类型来说，==是进行【地址值】的比较。
         */
        String str5 = "abc";
        String str6 = "abc";

        char[] charArray1 = {'a', 'b', 'c'};
        String str7 = new String(charArray1);

        System.out.println(str5 == str6); // true
        System.out.println(str5 == str7); // false
        System.out.println(str6 == str7); // false

        /**
         * boolean equals(Object obj)   对比字符串
         * boolean equalsIgnoreCase(String str)：忽略大小写比较
         * int length()：字符串长度。
         * 查询:
         * char charAt(int index)：获取指定索引位置的单个字符（索引从0开始）
         * int indexOf(String str)：查找参数字符串首次出现的索引位置，如果没有返回-1值
         *
         * 替换:
         * String replace(String oldString,String newString): 老字符串替换成为新的字符串,返回新字符串
         *
         * 拆分:
         * String[] split(String regex) : 根据参数拆分,返回字符串数组
         * char[] toCharArray()：将当前字符串拆分成为char数组返回
         *
         * 拼接及截取
         * String concat(String str)：拼接成为返回值新的字符串
         * String substring(int index)：截取参数位置至末尾，返回新字符串。
         * String substring(int begin, int end)：截取从begin到end结束，中间的字符串。[begin,end)，包头不尾。
         *
         */

    }


}
